/**
 * Create by TianJing
 */
(function(){
    function BuildSelect() {

    }
    BuildSelect.prototype={
        /**
         * 初始化 销售代表 下拉列表
         * @param  {Object}  Object
         * selector:销售代表select的选择器
         * url:销售代表列表的接口
         * data:发送请求时传入的过滤条件
         * key:销售代表的id（数据字段）
         * userName:销售代表的名字（数据字段）
         * checked:初始化选中的销售代表(数据字段)
         * @return {[type]}  [description]
         */
        saleUserList:function (saleUserSelector,initChecked) {
            common.buildNormalAjaxSelect({
                selector: saleUserSelector,
                url: window.globalHost + '/agent-sys/admin/user/list.do',
                data: {status: 'AVAILABLE',departId:"8a28b50f593f518501593f54eeb20000"},
                key: 'id',
                value: 'userName',
                checked:initChecked
            });
        },
        /**
         * 初始化 中介公司 下拉列表
         * @param  {Object}  Object
         * selector:中介公司select的选择器
         * url:中介公司列表的接口
         * data:发送请求时传入的过滤条件
         * key:中介公司的id（数据字段）
         * userName:中介公司的名字（数据字段）
         * checked:初始化选中的中介公司(数据字段)
         * @return {[type]}  [description]
         */
        agencyCompanyList:function (companySelector,initChecked) {
            common.buildNormalAjaxSelect({
                selector: companySelector,
                url: window.globalHost + '/agent-sys/admin/agencyInfo/index.do',
                data: { status: 'AVAILABLE' },
                key: 'id',
                value: 'agencyName',
                checked:initChecked
            });
        },
        /**
         * 初始化 中介联系人 下拉列表
         * @param  {Object}  Object
         * selector:中介联系人select的选择器
         * url:中介联系人列表的接口
         * data:发送请求时传入的过滤条件
         * key:中介联系人的id（数据字段）
         * userName:中介联系人的名字（数据字段）
         * checked:初始化选中的中介联系人(数据字段)
         * @return {[type]}  [description]
         */
        contactList:function (contactSelector,initChecked) {
            common.buildNormalAjaxSelect({
                selector: contactSelector,
                url: window.globalHost + '/agent-sys/admin/agencyContact/index.do',
                data: { status: 'AVAILABLE' },
                key: 'id',
                value: 'contactName',
                checked:initChecked
            });
        },
        /**
         * 根据 销售代表 联动渲染其名下的中介公司下拉列表
         * @param  {[type]} options      [参数]
         * options.salerSelector   销售代表选择器
         * options.companySelector  中介公司选择器
         * @return {[type]}               [null]
         */
        buildCompanyFormSaler:function (options) {
            var $company=$(options.companySelector);
            $company.attr("disabled",true);
            //监控销售代表下拉列表的选择变化
            $(options.salerSelector).off("change").on("change",function (e) {
                var $this=$(this);
                var selfVal=$this.val();
                $company.attr("disabled",false);
                if(!!selfVal){
                    //如果当前销售代表是有值的。那边先清除上一次操作中介公司的列表，再根据当前销售代表重新渲染公司列表。
                    //并且如果此时加载需要初始化选项，要在参数内传入 checked:数据中的公司id
                    $company.chosen("destroy");
                    common.buildNormalAjaxSelect({
                        selector: $company,
                        url: window.globalHost + '/agent-sys/admin/agencyInfo/index.do',
                        //data字段传入两个一个是销售代表状态：status，另一个是当前销售代表的id：saleId
                        data: {status: 'AVAILABLE',saleId:selfVal},
                        key: 'id',
                        value: 'agencyName',
                        checked:options.inintChecked
                    });
                }else{
                    //如果当前销售代表是没有值的。那边先清除上一次操作中介公司的列表，初始化公司下拉列表为空。
                    $company.chosen("destroy");
                    common.buildInitSelect($company);
                }
            });
        },
        /**
         * 根据 中介公司 联动渲染其名下的中介联系人下拉列表
         * @param  {[type]} options      [参数]
         * options.companySelector   中介公司选择器
         * options.contactSelector  中介联系人选择器
         * @return {[type]}               [null]
         */
        buildContactListByCompany:function (options) {
            var $contact=$(options.contactSelector);
            var $company=$(options.companySelector);
            common.buildInitSelect($contact);
            $contact.attr("disabled",true);
            //监控销售代表下拉列表的选择变化
            $company.off("change").on("change",function (e) {
                var $this=$(this);
                var selfVal=$this.val();
                $contact.attr("disabled",false);
                if(!!selfVal){
                    //如果当前销售代表是有值的。那边先清除上一次操作中介公司的列表，再根据当前销售代表重新渲染公司列表。
                    //并且如果此时加载需要初始化选项，要在参数内传入 checked:数据中的公司id
                    $contact.chosen("destroy");
                    // debugger
                    common.buildNormalAjaxSelect({
                        selector: $contact,
                        url: window.globalHost + '/agent-sys/admin/agencyContact/index.do',
                        //data字段传入两个一个是销售代表状态：status，另一个是当前销售代表的id：saleId
                        data: {status: 'AVAILABLE',agencyId:selfVal},
                        key: 'id',
                        value: 'contactName',
                        checked:options.inintChecked
                    });
                }else{
                    //如果当前中介公司是没有值的。那边先清除上一次操作中介联系人的列表，初始化联系人下拉列表为空。
                    $contact.chosen("destroy");
                    common.buildInitSelect($contact);
                }
            });
        },
        /**
         * 创建 公司部门 下拉列表
         */
        departmentList: function (departmentSelector,initChecked) {
            common.buildNormalAjaxSelect({
                selector:departmentSelector,
                url: window.globalHost + "/agent-sys/admin/department/index.do",
                data: { status: 'AVAILABLE' },
                key: 'id',
                value: 'departName',
                checked:initChecked
            });
        },
        /**
         * 创建 公司职务 下拉列表
         */
        roleList: function (roleSelector,initChecked) {
            common.buildNormalAjaxSelect({
                selector:roleSelector,
                url: window.globalHost + "/agent-sys/admin/role/list.do",
                data: {status:'AVAILABLE'},
                key: 'id',
                value: 'roleName',
                checked:initChecked
            });
        },
        /**
         * 基于ajax后台数据源的联动下拉插件,部门职务关联
         * @param  {Object} options      [参数] 对象
         * @return {[type]}               [null]
         */
        buildRoleListByDepartment:function (options) {
            common.buildLinkedAjaxSelect({
                fatherSelector: options.departmentSelector,
                sonSelector: options.roleSelector,
                url: window.globalHost + "/agent-sys/admin/department/index.do",
                data: { status: 'AVAILABLE'},
                fatherId: 'id',
                fatherValue: 'departName',
                fatherSelectorChange:options.fatherSelectorChange,
                fatherChecked:options.initFatherChecked,
                sonKey:'roles',
                sonId:'roleId',
                sonValue:'roleName',
                sonChecked:options.initSonChecked
            });
        },
        buildEmployeeList:function (selector,initChecked,callback) {
            common.buildNormalAjaxSelect({
                selector:$(selector),
                url: window.globalHost + "/agent-sys/admin/user/list.do",
                data: {status:'AVAILABLE'},
                key:'id',
                value:'userName',
                mobile:'mobile',
                checked:initChecked,
                callback:function ($ele) {
                    var id=$ele.val();
                    var $selected=$ele.find(":selected");
                    var name=$selected.text();
                    var mobile=$selected.attr("data-mobile");
                    $("#contactTel").html(!!mobile?mobile:"");
                }
            });
        }
    };

    window.buildSelect=new BuildSelect();
}).call(this);
